Skip to content

Trello Clone

In this challenge, you'll be adding “drag-and-drop” functionality to create a Trello-like UI:

Trello’s drag-and-drop implementation is deceptively complex. To make this challenge a bit less impossible, you don't have to worry about dropping the card between other cards. Notice in the GIF above, the dropped card is always added to the end of the column.

Difficulty

This question feels like another step up in difficulty to me. The state required for this sort of problem is quite complex, and it's so easy to get lost / overwhelmed.

I don't think this problem requires anything beyond what we've covered in the course. It's comparable to an extra-hard exercise from the course.

Rules

  • You're not allowed to use any drag-and-drop libraries.
  • You can access the internet to google anything else you'd like, including ways to implement drag and drop from scratch.
  • You can use immer, it has been pre-installed in this playground.
  • You don't have to worry about touchscreen support for this challenge.

Playground

Code Playground

import React from 'react';

function App() {
return (
<main>
<section className="column">
<header>Upcoming</header>
<div className="cards">
<button className="card">Buy cat food</button>
<button className="card">File taxes</button>
</div>
</section>
<section className="column">
<header>Finished</header>
<div className="cards">
<button className="card">
Buy Amina's birthday present
</button>
<button className="card">
Schedule haircut
</button>
</div>
</section>
</main>
);
}

export default App;

My attempt

Clarification: In this video, I mention that I decided to add immer as a dependency, and that unfortunately you can't add dependencies. This playground, however, does come with immer installed.

I record these attempts before I've really figured out what the dependencies will be, since I'm solving the problem for the first time. Sorry for any confusion!